Interbase a cestina v triggerech a procedurach

Otázka od: Petr Selinger

9. 12. 2002 12:56

Zdravim,
  nevi nekdo, jak se da pouzit cestina v triggerech a procedurach?
  Pokud si napr. nactu do lok. promenne data z tabulky obsahujici
  hacky a carky, pak s touto promennou nemuzu pracovat.

  Priklad:

  - mam tabulku STRINGS, sloupce ID, TEXT (WIN250)
  - vybiram radek s id 1, (pole TEXT obsahuje hacky, carky)
    a pak chci k tomuto stringu neco pridat.

  select TEXT from STRINGS where ID=1 into :SText;
  SText = :SText || ' neco pridam.'; <- nahlasi chybu


  Diky za kazdou radu,
                          Petr Selinger
                          IB6.02, D5SP2


Odpovedá: Kalhous Zdenek

9. 12. 2002 16:33

> nevi nekdo, jak se da pouzit cestina v triggerech a procedurach?
> Pokud si napr. nactu do lok. promenne data z tabulky obsahujici
> hacky a carky, pak s touto promennou nemuzu pracovat.
> - mam tabulku STRINGS, sloupce ID, TEXT (WIN250)
> - vybiram radek s id 1, (pole TEXT obsahuje hacky, carky)
> a pak chci k tomuto stringu neco pridat.
> select TEXT from STRINGS where ID=1 into :SText;
> SText = :SText || ' neco pridam.'; <- nahlasi chybu
Funguje treba toto: SText nacist do lokalni promenne ktera je
deklarovana s charsetem, to neco pridavane taky a pak to teprv
zretezit. Zhruba takto:
create procedure qpokus
returns
(qtext char(100) CHARACTER SET WIN1250)
as
 declare variable pom char(50) CHARACTER SET
WIN1250;
 declare variable pom1 char(50) CHARACTER SET
WIN1250;
begin
pom='ěščřž';
for select TEXT from STRINGS into :pom1
do begin
qtext=pom1||pom;
suspend;
end

Odpovedá: Pavel Cisar

9. 12. 2002 19:24

Haj hou!

On 9 Dec 2002 at 12:20, Petr Selinger wrote:

> Zdravim,
> nevi nekdo, jak se da pouzit cestina v triggerech a procedurach?
> Pokud si napr. nactu do lok. promenne data z tabulky obsahujici
> hacky a carky, pak s touto promennou nemuzu pracovat.
>
> Priklad:
>
> - mam tabulku STRINGS, sloupce ID, TEXT (WIN250)
> - vybiram radek s id 1, (pole TEXT obsahuje hacky, carky)
> a pak chci k tomuto stringu neco pridat.
>
> select TEXT from STRINGS where ID=1 into :SText;
> SText = :SText || ' neco pridam.'; <- nahlasi chybu

Problem je v tom, ze literal neobsahuje informaci o znakove sade zatimco
promenna ano, a dojde k chybe konverze. Musis uvest znakovou sadu pro
znakovou konstantu, ktera ma standardne tvar _<jmeno sady v IB/FB>, napr.
_WIN1250. V tvem pripade by to tedy melo vypadat

   select TEXT from STRINGS where ID=1 into :SText;
   SText = :SText || _WIN1250 ' neco pridam.';

S pozdravem
Pavel Cisar
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase

Odpovedá: Lebeda David

10. 12. 2002 7:47

> Musis uvest znakovou
> sadu pro znakovou konstantu, ktera ma standardne tvar _<jmeno sady v
> IB/FB>, napr. _WIN1250. V tvem pripade by to tedy melo vypadat
>
> select TEXT from STRINGS where ID=1 into :SText;
> SText = :SText || _WIN1250 ' neco pridam.';

Ahoj,

je tohle nekde zdokumentovano? Nevzpominam si, ze bych o tom nekde ani slysel,
natoz cetl.

David Lebeda

Odpovedá: Petr Selinger

10. 12. 2002 9:47

> Problem je v tom, ze literal neobsahuje informaci o znakove sade
> zatimco promenna ano, a dojde k chybe konverze. Musis uvest
> znakovou sadu pro znakovou konstantu, ktera ma standardne tvar
> _<jmeno sady v IB/FB>, napr.
> _WIN1250. V tvem pripade by to tedy melo vypadat
>
> select TEXT from STRINGS where ID=1 into :SText;
> SText = :SText || _WIN1250 ' neco pridam.';

Ahoj,
  problem byl nakonec v tom, ze databaze byla vytvorena s nastavenym
  charsetem Default, takze se implicitne pouzil tento charset i pro
  lokalni promenne procedur a triggeru.
  Pomohlo vyextrahovat metadata, dropnout databazi, opravit charset
  a znovu ji vytvorit a naplnit. Pak uz vse fungovalo.

  Ovsem nekdy to tak nejde, pak se hodi tvuj tip, diky.

                                                           Petr



Odpovedá: Pavel Cisar

10. 12. 2002 10:54

Haj hou!

On 10 Dec 2002 at 7:22, Lebeda David wrote:

> je tohle nekde zdokumentovano? Nevzpominam si, ze bych o tom nekde ani
slysel,
> natoz cetl.

Mno, melo by to byt v manualech k IB   Kaztopadne to bude v nove knize
o IB a FB  

S pozdravem
Pavel Cisar
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase